package cn.cxq.learning.math;

import org.junit.jupiter.api.Test;

/**
 * 链接：https://www.nowcoder.com/questionTerminal/e69148f8528c4039ad89bb2546fd4ff8
 * 来源：牛客网
 *
 * [编程题]表示数值的字符串
 * 热度指数：11834时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 256M，其他语言512M
 * 算法知识视频讲解
 * 请实现一个函数用来判断字符串是否表示数值（包括整数和小数）。例如，字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
 * 示例1
 * 输入
 * "123.45e+6"
 * 输出
 * true
 * 示例2
 * 输入
 * "1.2.3"
 * 输出
 * false
 */
public class IsNumeric {

    @Test
    public void test() {
        System.out.println(isNumeric("123.45e+6"));
    }

    // 正则表达式轻松解决
    public boolean isNumeric (String str) {
        return str.matches("[+-]?\\d*\\.?\\d+|[+-]?\\d*\\.?\\d+[eE][+-]?\\d+");
    }

    @Test
    public void test2() {
        boolean matches = "e".matches("[eE]");
        System.out.println(matches);
    }
}
